#Entradad de dados##
anova.rep <- read.table("tratamentosdados.csv", header=T, sep=",", as.is=F) #Entrada de dados com o formato dataframe
anova.rep #Observar que os dados sejam lidos corretamente

##Fazendo funcao de Anova de Medidas Repetidas##
AnovaRep <- function(x)
	{
	if (class(x)!="data.frame") stop("\t", "Erro: O objeto x nao  de classe tipo data.frame!\n") #Aviso sobre a natureza dos dados
	#Exploratoria de dados
	if (any(is.na(x)==TRUE)) stop("\t", "Erro: os dados nao podem ter dados faltantes, ou a Anova vai ter vies!\n") #Aviso sobre dados faltantes ou ausentes
	str(anova.rep) #Observar que a estrutura do novo objeto com o data frame seja o proposto 
	x11() #Abrendo janela
	par(mfrow=c(2,2)) #abrendo uma janela com duas filas e duas colunas
	qqnorm(anova.rep$Pre.test, main="Q-Q da Temperatura") #Avaliando a normalidade do Pre-test para o calculo da anova#
	qqline(anova.rep$Pre.test, col="red", lwd="2") #A linha para observar quanto dos dados estao ajustados#
	qqnorm(anova.rep$PostLPS1, main="Q-Q da Temperatura") #Avaliando a normalidade do PostLPS1 para o calculo da anova#
	qqline(anova.rep$PostLPS1, col="red", lwd="2") #A linha para observar quanto dos dados estao ajustados#
	qqnorm(anova.rep$PostLPS2, main="Q-Q da Temperatura") #Avaliando a normalidade do PostLPS2 para o calculo da anova#
	qqline(anova.rep$PostLPS2, col="red", lwd="2") #A linha para observar quanto dos dados estao ajustados#
	qqnorm(anova.rep$PostLPS3, main="Q-Q da Temperatura") #Avaliando a normalidade do PostLPS3 para o calculo da anova#
	qqline(anova.rep$PostLPS3, col="red", lwd="2") #A linha para observar quanto dos dados estao ajustados#

	#Grafico
	x11()#abrendo uma janela nova para o grafico com 1 fila e 1 coluna
	boxplot(anova.rep[,2:5], main="Efeito do Tratamento/Tempo", ylab= "Individuo Temperatura", xlab="Tratamentos") #fazendo o grafico da anova com cada uns dos tratamentos
	
	cat("Lembre-se fazer uma transformarcao previa aos dados se no apresentam normalidade!\n") #Se os dados nao cumplem com os presupostos de Normalidade#
	
	#calculando o tamanho da amostra total
	Ti <- apply(anova.rep[,2:5], 1, sum) #sumando os dados pelos individuos
	Ti2K <- ((anova.rep$Ti^2)/4) #
	N <- 40 #numero de medidas feitas para a otra dos dados
	n <- 10 #numero de medidas feitas em cada um dos tratamentos
	Tk.tempertrat <- apply(anova.rep[,2:5], 2, sum) #suma dos dados por cada tratamento
	mean.tempertrat <- apply(anova.rep[,2:5], 2, mean) #media dos dados por cada tratamento
	TK2n <- (Tk.tempertrat)^2/10 #duplicacao dos dados sumados por cada tratamento e divididos no nmero de observacoes feitas por tratamento
	SumTK2n <- sum(TK2n) #sumatoria da operacao no objeto anterior 
	T2N <- (sum(Tk.tempertrat)^2)/40 #sumatoria dos dados sumados e duplicados por tratamento  e dividido no nmero de observacoes totales feitas
	sumtrat2.pre.test <- sum(anova.rep$Pre.test^2) #suma dos dados quadrados do primer tratamento
	sumtrat2.postLPS1 <- sum(anova.rep$PostLPS1^2) #suma dos dados duplicados do segundo tratamento
	sumtrat2.postLPS2 <- sum(anova.rep$PostLPS2^2) #suma dos dados duplicados do terceiro tratamento
	sumtrat2.postLPS3 <- sum(anova.rep$PostLPS3^2) #suma dos dados duplicados do quarto tratamento
	Sum.trat2 <- sum(sumtrat2.pre.test,sumtrat2.postLPS1,sumtrat2.postLPS2,sumtrat2.postLPS3) #suma de todos os dados
	Sum.Ti2K <- sum(Ti2K) #sumatoria dos dados duplicados e dividos no quatro repeticoes feitas
	#Suma dos quadrados
	ss.total <- Sum.trat2 - T2N #diferenca entre suma de todos os dados e desvio padrao de todos os dados 
	ss.entre <- Sum.Ti2K - T2N #diferenca da dados por individuos e dados totais
	ss.intra <- SumTK2n - T2N #diferenca dos dados por tratamento e os dados totais
	ss.ressidual <- ss.total - ss.entre - ss.intra #diferenca dos dados totais, intra e entre grupos 
	#calculando os graus de liberdade da Suma dos quadrados
	gl.total <- 40-1 #numero de observacoes feitas menos 1
	gl.entre <- 10-1 #numero de observacoes feitas por tratamento menos 1
	gl.intra <- 4-1 #numero de repeticoes feitas menos 1
	gl.ressidual <- (40-1)*(10-1) #multiplicacao dos graus de liberdade total e graus de liberdade entre grupos
	#Fazendo a tabla de Resumo da Anova
	Fonte.Varianca <- c("entre-grupos", "intra-grupos", "grupo-ressidual", "Total") #fazendo o "head" da tabela resumo"
	gl <- c(gl.entre, gl.intra, gl.ressidual, gl.total) #fila dos graus de liberdades para cada grupo
	SS <- c(ss.entre, ss.intra, ss.ressidual, ss.total) #fila dos SS de cada grupo
	MS <- c((ss.entre/gl.entre),(ss.intra/gl.intra), (ss.ressidual/gl.ressidual), "NA") #fila dos cocientes das sumas dos quadrados de cada grupo(varianca)
	F.ratio <- c(((ss.intra/gl.intra)/(ss.ressidual/gl.ressidual)), "NA", "NA", "NA") #calculando o F-ratio a partir da suma dos quadrados intra e ressidual
	Anovarep.resulta <- data.frame(Fonte.Varianca, gl, SS, MS, F.ratio) #fazendo o objeto da tabla de resumo da anova de medidas repetidas
	return(Anovarep.resulta) #retornando a tabla resumo
	} 

AnovaRep(anova.rep)

